//package com.ruoyi.ruoyiserver.utils;
//
//import cn.hutool.core.io.file.FileNameUtil;
//import cn.hutool.core.util.StrUtil;
//import com.ruoyi.common.exception.ServiceException;
//import com.ruoyi.ruoyiserver.config.IConstants;
//import com.ruoyi.ruoyiserver.domain.FusunSource;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.servlet.http.HttpServletResponse;
//import java.io.*;
//import java.net.URLEncoder;
//import java.text.DecimalFormat;
//
//@Slf4j
//public class IFileUtil {
//
//    /**
//     * 文件大小计算
//     *
//     * @param size 文件大小
//     * @return 计算后的大小
//     */
//    public static String formatFileSize(long size) {
//        DecimalFormat df = new DecimalFormat("#.00");
//        String fileSizeString = "";
//        String wrongSize = "0B";
//        if (size == 0) {
//            return wrongSize;
//        }
//        if (size < 1024) {
//            fileSizeString = df.format((double) size) + "B";
//        } else if (size < 1048576) {
//            fileSizeString = df.format((double) size / 1024) + "KB";
//        } else if (size < 1073741824) {
//            fileSizeString = df.format((double) size / 1024 / 1024) + "MB";
//        } else if (size < 1099511627776L) {
//            fileSizeString = df.format((double) size / 1073741824) + "GB";
//        } else if (size < 1125899906842624L) {
//            fileSizeString = df.format((double) size / 1099511627776L) + "TB";
//        } else {
//            fileSizeString = df.format((double) size / 1125899906842624L) + "PB";
//        }
//        return fileSizeString;
//    }
//
//    /**
//     * 下载文件
//     *
//     * @param in   输入流
//     * @param name 文件名称
//     */
//    public static void down(String name, HttpServletResponse response, InputStream in) throws IOException {
//
//
//        BufferedOutputStream bos = null;
//        try {
//            response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(name, "UTF-8"));
//            response.setHeader("Content-Length", String.valueOf(in.available()));
//            response.setContentType("application/octet-stream");
//            bos = new BufferedOutputStream(response.getOutputStream());
//            byte[] buff = new byte[2048];
//            while (true) {
//                int bytesRead;
//                if (-1 == (bytesRead = in.read(buff, 0, buff.length))) break;
//                bos.write(buff, 0, bytesRead);
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        if (in != null) {
//            try {
//                in.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//        if (bos != null) {
//            try {
//                bos.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//    }
//
//    /**
//     * 保存文件
//     */
//    public static FusunSource saveFile(MultipartFile file) {
//
//        String filename = file.getOriginalFilename();
//        String sourcePath = IConstants.PIC_DIR;
//        String sourceSuffix = FileNameUtil.getSuffix(filename);
//        String randomName = StrUtil.format("{}.{}", UUIDUtils.generateRandomUUID(), sourceSuffix);
//
//        File saveFile = new File(IConstants.STORAGE_DIR + sourcePath, randomName);
//        try {
//            saveFile.createNewFile();
//            //上传数据
//            file.transferTo(saveFile);
//        } catch (IOException e) {
//            log.error("文件存储失败!");
//            throw new ServiceException("文件存储失败!");
//        }
//
//        //存储到文件表中
//        FusunSource source = new FusunSource();
//        source.setId(UUIDUtils.generateRandomUUID());
//        source.setSourceFlag("1");
//        source.setSourceName(filename);
//        source.setSourcePath(sourcePath + randomName);
//        source.setSourceSuffix(sourceSuffix);
//        // source.setSourceSize(IFileUtil.formatFileSize(in.available()));
//        source.setSourceUrl("/files" + "/" + randomName);
//
//
//        log.info("文件：{}上传成功！地址：{}", filename, source.getSourcePath());
//        return source;
//    }
//
//
//}
